home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / pascal / xlibpas2.zip / BLITDEMO.PAS < prev    next >
Pascal/Delphi Source File  |  1994-06-12  |  6KB  |  157 lines

  1. {$IFDEF DPMI}
  2. {$C FIXED PRELOAD PERMANENT}
  3. {$ENDIF}
  4.  
  5. Program BlitDemo;
  6.  
  7. Uses
  8.     Crt, XLib2, XBm2;
  9.  
  10. const
  11.     turtle : array[0..601] of byte =
  12.     ( 20,30,
  13.         8,14, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14.         8, 2,14, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  15.         8, 2, 2, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  16.         8, 0, 2,14, 0, 0,14,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  17.         8, 0, 2, 5, 0, 4, 4, 4, 4,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  18.         8, 0, 2, 2, 4, 4, 0, 4, 4, 0, 4,14, 0, 0, 0, 0, 0, 0, 0, 0,
  19.         0, 0, 2, 4, 4, 4, 0, 4, 4, 0, 4, 4,14, 0, 0, 0, 0, 0, 0, 0,
  20.         0, 0, 2, 4, 4, 4, 0, 0, 0, 0, 4, 4,14, 0, 0, 0, 0, 0, 0, 0,
  21.         0, 0, 0, 0, 4, 0, 4, 4, 4, 0, 0, 0, 4, 0, 0, 2, 2, 0, 0, 0,
  22.         0, 0, 0, 4, 0, 4, 4, 4, 0, 4, 4, 4, 0,14, 0, 0, 2, 2, 0, 0,
  23.         0, 0, 0, 4, 4, 0, 0, 0, 4, 4, 0, 4, 0, 4, 2, 2, 2, 2, 0, 0,
  24.         0, 0, 0, 4, 4, 4, 0, 4, 4, 0, 4, 4, 0, 4,14, 2, 2, 2, 0, 0,
  25.         0, 0, 0, 4, 4, 4, 0, 0, 0, 4, 4, 0, 4, 0, 0, 2, 2, 0, 0, 0,
  26.         0, 0, 0, 2, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4,14, 2, 0, 0, 0, 0,
  27.         0, 0, 2, 2, 0, 4, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 0, 0, 0, 0,
  28.         2, 2, 2, 2, 4, 0, 0, 4, 4, 0, 4, 4, 0, 4,14, 0, 0, 0, 0, 0,
  29.         0, 2, 2, 0, 4, 4, 4, 0, 0, 4, 4, 0, 4, 0, 2, 0, 0, 0, 0, 0,
  30.         0, 0, 0, 0, 0, 4, 4, 0, 4, 4, 4, 0, 4, 4, 2,14, 0, 0, 0, 0,
  31.         0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 0, 4, 0, 2, 2,14,14, 0, 0,
  32.         0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 4, 2, 2, 2, 2, 2,14, 0,
  33.         0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 5,14, 0,
  34.         0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 2, 0, 0, 2, 2, 2, 0, 2,14,
  35.         0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2,14,
  36.         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2,
  37.         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0,
  38.         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0,
  39.         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0,
  40.         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0,
  41.         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
  42.         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );
  43.  
  44.  
  45. var
  46.     TurtleSprite, TurtleSprite32, newfnt, pbm : array[0..2048] of byte;
  47.     vbm : pointer;
  48.  
  49.  
  50. Procedure AllocatedSprite( width, height, logicalwidth : integer; var bitmap );
  51. begin
  52.     xbmtopbm(bitmap,pbm);
  53.     XCompileBitmap( logicalwidth, bitmap, TurtleSprite );
  54. end;
  55.  
  56. Procedure loaduserfonts;
  57. var
  58.     f : file;
  59.     i : integer;
  60. begin
  61.     assign(f,'fonts\smalthin.fnt');
  62.     reset(f,1);
  63.     blockread(f,newfnt,filesize(f));
  64.     close(f);
  65.     xtextinit;
  66.     xregisteruserfont(newfnt);
  67.     xsetfont(2);
  68. end;
  69.  
  70. procedure main;
  71. var
  72.     i,j,k : integer;
  73.     ratio,ratio2,ratio3 : real;
  74.     pbmt0, pbmt1, vbmt0, vbmt1, cbmt0, cbmt1, cbm32t0, cbm32t1,
  75.     vbmticks,pbmticks,cbmticks,cbm32ticks : longint;
  76.     timer : longint absolute $0040:$006C;
  77.     size, size2, size3 : word;
  78. begin
  79.     xsetmode(XMODE320x240,360);
  80.     AllocatedSprite(20, 30, 90,turtle);
  81.  
  82.     vbm := xmakevbm(turtle,NonVisualOffs);
  83.     loaduserfonts;
  84.     xbgprintf(0,0,0,14,0,'This is a demo to show the speed difference between');
  85.     xbgprintf(0,8,0,14,0,'compiled, planar and video bitmaps.  The bitmap:');
  86.     xputpbm(140, 18, 0, pbm);
  87.     xbgprintf(0,48,0,14,0,'This demo uses the NON CLIPPED, MASKED versions of');
  88.     xbgprintf(0,56,0,14,0,'       ''PBM'' and ''VBM'' put functions');
  89.     xbgprintf(0,78,0,14,0,'Press a key to start with PLANAR BITMAP demo');
  90.     readkey;
  91.     xrectfill(0,0,ScrnPhysicalPixelWidth,ScrnPhysicalHeight,0,0);
  92.     pbmt0 := timer;
  93.     for k:=0 to 30 do
  94.         for j:=0 to (ScrnPhysicalHeight div 30)-1 do
  95.             for i:=0 to (ScrnPhysicalPixelWidth div 20)-1 do
  96.                 xputmaskedpbm(i*20, j*30, 0, pbm);
  97.     pbmt1 := timer;
  98.     pbmticks := abs(pbmt1-pbmt0);
  99.  
  100.  
  101.     xbgprintf(0,0,0,14,0,'Press a key to start with the VIDEO BITMAP demo');
  102.  
  103.     readkey;
  104.     xrectfill(0,0,ScrnPhysicalPixelWidth,ScrnPhysicalHeight,0,0);
  105.     vbmt0 := timer;
  106.     for k:=0 to 30 do
  107.         for j:=0 to (ScrnPhysicalHeight div 30)-1 do
  108.             for i:=0 to (ScrnPhysicalPixelWidth div 20)-1 do
  109.                 xputmaskedvbm(i*20, j*30, 0, vbm^);
  110.     vbmt1 := timer;
  111.     vbmticks := abs(vbmt1-vbmt0);
  112.     xbgprintf(0,0,0,14,0,'Now Press a key to start with COMPILED BITMAP demo');
  113.     readkey;
  114.     xrectfill(0,0,ScrnPhysicalPixelWidth,ScrnPhysicalHeight,0,0);
  115.     cbmt0 := timer;
  116.     for k:=0 to 30 do
  117.         for j:=0 to (ScrnPhysicalHeight div 30)-1 do
  118.             for i:=0 to (ScrnPhysicalPixelWidth div 20)-1 do
  119.                 xputcbitmap(i*20, j*30, 0, TurtleSprite);
  120.     cbmt1 := timer;
  121.     cbmticks := abs(cbmt1-cbmt0);
  122.     size := XSizeOfCBitmap32( 90, turtle );
  123.     size3 := XSizeOfCBitmap( 90, turtle );
  124.     size2 := XCompileBitmap32( 90, turtle, TurtleSprite32 );
  125.     xbgprintf(0,0,0,14,0,'Now Press a key to start with 32BIT COMPILED BITMAP demo');
  126.     readkey;
  127.     xrectfill(0,0,ScrnPhysicalPixelWidth,ScrnPhysicalHeight,0,0);
  128.     cbm32t0 := timer;
  129.     for k:=0 to 30 do
  130.         for j:=0 to (ScrnPhysicalHeight div 30)-1 do
  131.             for i:=0 to (ScrnPhysicalPixelWidth div 20)-1 do
  132.                 xputcbitmap(i*20, j*30, 0, TurtleSprite32);
  133.     cbm32t1 := timer;
  134.     cbm32ticks := abs(cbm32t1-cbm32t0);
  135.     ratio3 := cbmticks/cbm32ticks;
  136.     ratio := pbmticks/cbm32ticks;
  137.     ratio2 := vbmticks/cbm32ticks;
  138.     readkey;
  139.     xtextmode;
  140. {$IFDEF DPMI}
  141.     writeln('DPMI version');
  142. {$ENDIF}
  143.     writeln('Planar Bitmaps         = ',pbmticks);
  144.     writeln('Video Bitmaps          = ',vbmticks);
  145.     writeln('Compiled Bitmaps       = ',cbmticks);
  146.     writeln('32Bit Compiled Bitmaps = ',cbm32ticks);
  147.     writeln;
  148.     writeln('PBM/CBM32        = ',ratio:8:10);
  149.     writeln('VBM/CBM32        = ',ratio2:8:10);
  150.     writeln('CBM/CBM32        = ',ratio3:8:10);
  151.     writeln( size,' = ',size2, ' = ', size3 );
  152. end;
  153.  
  154. begin
  155.     main;
  156. end.
  157.